/**
 * Epitopo Geral
 *
 * Responsavel por armazenar todos os epitopos em comum em cada site, definindo
 * esses epitopos pelo rank global
 */
package epibot.testeProteinas;

import epibot.EstruturasBiologicas.Epitopo;

/**
 *
 * @author Rafael Tosta
 */
public class EpitopoGeral extends Epitopo {

    /**
     * Score Global do epitopo
     */
    private double scoreGlobal;
    /**
     * Rank do epitopo
     */
    private int rank;

    /**
     * Construtor 1
     *
     * @param epitopo Epitopo
     */
    public EpitopoGeral(Epitopo epitopo) {
        super(epitopo.getNomeEpitopo(), epitopo.getPosicaoNaProteina(), epitopo.getScoreAbsoluto(), epitopo.getProteina());

        this.scoreGlobal = 0.0;
    }

    /**
     * Construtor 2 Cria o objeto epitopo geral definindo o score global
     *
     * @param epitopo Epitopo
     * @param scoreGlobal Score Global
     */
    public EpitopoGeral(Epitopo epitopo, double scoreGlobal) {
        super(epitopo.getNomeEpitopo(), epitopo.getPosicaoNaProteina(), epitopo.getScoreAbsoluto(), epitopo.getProteina());
        this.scoreGlobal = scoreGlobal;

    }

    /**
     * Retorna as informações concatenadas em apenas uma string
     *
     * @return Informações concatenadas
     */
    public String getInformacaoEG() {
        //saida.write("RANK,EPITOPO,POSICAO,SCORE_GLOBAL,ALELO,TAMANHO,COD_PROTEINA");
        return this.rank + "," + this.getNomeEpitopo() + "," + this.getPosicaoNaProteina() + "," + this.scoreGlobal
                + "," + this.getProteina().getAlelo() + "," + this.getProteina().getTamanho() + ","
                + this.getProteina().getCabecalho();
    }

    public String getInformacaoEG2() {
        //saida.write("RANK,EPITOPO,POSICAO,SCORE_GLOBAL,ALELO,TAMANHO,COD_PROTEINA");
        return this.rank + "," + this.getNomeEpitopo() + "," + this.getPosicaoNaProteina() + "," + this.scoreGlobal+","+this.getProteina().getCodProteina();
    }

    public String gettext() {
        return this.getProteina().getCodProteina() + "_" + this.getProteina().getAlelo() + "_" + this.getProteina().getTamanho();

    }

    /**
     * Retorna o seu score global local (apenas referente ao mesmo site)
     *
     * @return Score Global local
     */
    public double getScoreGlobalLocal() {
        return this.getScoreNormalizado() * this.getProteina().getNotaDoSite();
    }

    /**
     * Retorna o score global
     *
     * @return Score Global
     */
    public double getScoreGlobal() {
        return this.scoreGlobal;
    }

    /**
     * Define o rank do Epitopo Geral
     *
     * @param rank Rank
     */
    public void setRank(int rank) {
        this.rank = rank;
    }

    /**
     * Retorna o rank do epitopo geral
     *
     * @return Rank
     */
    @Override
    public int getRank() {
        return rank;
    }
}
